package ar.edu.utn.frgp.labtec.actions.ordentrabajo;

import java.util.HashMap;
import java.util.HashSet;
import java.util.List;

import ar.edu.utn.frgp.labtec.actions.BaseAction;
import ar.edu.utn.frgp.labtec.constants.DBParametersConstants;
import ar.edu.utn.frgp.labtec.constants.ServiceNameConstants;
import ar.edu.utn.frgp.labtec.entities.EstadoEnum;
import ar.edu.utn.frgp.labtec.entities.OrdenDeTrabajo;
import ar.edu.utn.frgp.labtec.entities.TipoPermisoEnum;
import ar.edu.utn.frgp.labtec.service.GestionOrdenTrabajoService;


@SuppressWarnings("serial")
public class BuscarOrdenTrabajoAction extends BaseAction  {
	
	private Integer idOrdenBus;
	private String anioOrdenBus;
	private Integer laboratorioBus;
	private String departamentoBus;
	private String estado;
	
	private String razonSocial;
	private String cuit;
	private String rubro;
	private String responsable;
	private List<OrdenDeTrabajo> resultList;
	
	public BuscarOrdenTrabajoAction(){
		permisos = new HashSet<TipoPermisoEnum>();
		permisos.add(TipoPermisoEnum.L);
	}
	
	public String execute(){
		HashMap<String, Object> parameters = createParametersMap();
		
		GestionOrdenTrabajoService ordenService = (GestionOrdenTrabajoService)getContext().getBean(ServiceNameConstants.GESTION_ORDEN_TRABAJO_SERVICE);
		resultList = ordenService.getOrdenes(parameters);
		
		return SUCCESS;
	}
	
	private HashMap<String, Object> createParametersMap(){
		
		HashMap<String, Object> parameters = new HashMap<String, Object>();
		
		if(idOrdenBus != null)
			parameters.put(DBParametersConstants.ID_ORDEN, idOrdenBus);
		
		if(!"".equals(anioOrdenBus))
			parameters.put(DBParametersConstants.ANIO_ORDEN, anioOrdenBus);
		
		if(laboratorioBus != null)
			parameters.put(DBParametersConstants.LABORATORIO_CODE_LAB, laboratorioBus);
		
		if(!"".equals(departamentoBus))
			parameters.put(DBParametersConstants.DEPARTAMENTO_CODE_DPTO, departamentoBus);
		
		if(!"".equals(estado)){
			EstadoEnum estadoE = EstadoEnum.valueOf(estado);
			parameters.put(DBParametersConstants.ESTADO, estadoE);
		}
		if(!"".equals(razonSocial))
			parameters.put(DBParametersConstants.CLIENTE_RAZON_SOCIAL, razonSocial);
		
		if(!"".equals(cuit))
			parameters.put(DBParametersConstants.CLIENTE_CUIT, cuit);
		
		if(!"".equals(rubro))
			parameters.put(DBParametersConstants.CLIENTE_RUBRO, rubro);
		
		if(!"".equals(responsable))
			parameters.put(DBParametersConstants.CLIENTE_RESPONSABLE, responsable);

		return parameters;
	}
	
	

	public Integer getIdOrdenBus() {
		return idOrdenBus;
	}

	public void setIdOrdenBus(Integer idOrdenBus) {
		this.idOrdenBus = idOrdenBus;
	}

	public String getAnioOrdenBus() {
		return anioOrdenBus;
	}

	public void setAnioOrdenBus(String anioOrdenBus) {
		this.anioOrdenBus = anioOrdenBus;
	}

	public Integer getLaboratorioBus() {
		return laboratorioBus;
	}

	public void setLaboratorioBus(Integer laboratorioBus) {
		this.laboratorioBus = laboratorioBus;
	}

	public String getDepartamentoBus() {
		return departamentoBus;
	}

	public void setDepartamentoBus(String departamentoBus) {
		this.departamentoBus = departamentoBus;
	}

	public String getEstado() {
		return estado;
	}

	public void setEstado(String estado) {
		this.estado = estado;
	}

	public String getRazonSocial() {
		return razonSocial;
	}

	public void setRazonSocial(String razonSocial) {
		this.razonSocial = razonSocial;
	}

	public String getCuit() {
		return cuit;
	}

	public void setCuit(String cuit) {
		this.cuit = cuit;
	}

	public String getRubro() {
		return rubro;
	}

	public void setRubro(String rubro) {
		this.rubro = rubro;
	}

	public String getResponsable() {
		return responsable;
	}

	public void setResponsable(String responsable) {
		this.responsable = responsable;
	}

	public void setResultList(List<OrdenDeTrabajo> resultList) {
		this.resultList = resultList;
	}

	public List<OrdenDeTrabajo> getResultList() {
		return resultList;
	}
	
	
}